package com.joyoung.common.api.interceptor;

import android.support.annotation.NonNull;
import android.text.TextUtils;


import com.joyoung.common.AppConfig;
import com.joyoung.common.L;
import com.joyoung.common.api.ApiConfig;
import com.joyoung.common.utils.SignUtil;

import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;

import okhttp3.Response;
import okhttp3.ResponseBody;

/**
 * 普通网络请求拦截器（GET、DELETE、PUT、POST）
 *
 * @author Classic
 * @version v1.0, 2017/8/21 下午4:16
 */
@SuppressWarnings("unused")
public class BaseInterceptor extends AbsInterceptor {
    
    public BaseInterceptor(@NonNull ApiConfig apiConfig) {
        super(apiConfig);
    }
    
    protected Response processResponse(@NonNull Response response) throws IOException, NullPointerException {
        String responseBody = response.body().string();
        try {
            JSONObject jsonObject = new JSONObject(responseBody);
            // 增加接口日志给UI自动化测试适用，并在返回response中增加path字段
            if (AppConfig.getInstance().isDebugMode()) {
                String urlPath = response.request().url().encodedPath();
                jsonObject.put("path", urlPath);
                L.i("result", urlPath + jsonObject.toString());
            }
            
            String res = "";
            if (jsonObject.has("msg")) {
                res = jsonObject.getString("msg");
            }
            if (TextUtils.isEmpty(res)) {
                if (jsonObject.has("error")) {
                    res = jsonObject.getString("error");
                }
            }
            jsonObject.put("description", res);
            responseBody = jsonObject.toString();
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return response.newBuilder()
                .body(ResponseBody.create(response.body().contentType(), responseBody))
                .build();
    }
    
}